package com.healthai.mapper;

import com.healthai.entity.ExerciseRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface ExerciseRecordMapper {
    /**
     * 根据用户ID和日期查询运动记录
     * @param userId 用户ID
     * @param exerciseDate 运动日期
     * @return 运动记录列表
     */
    List<ExerciseRecord> findByUserIdAndDate(@Param("userId") Integer userId, @Param("exerciseDate") LocalDate exerciseDate);
    
    /**
     * 新增运动记录
     * @param record 运动记录
     * @return 影响行数
     */
    int insert(ExerciseRecord record);
    
    /**
     * 更新运动记录
     * @param record 运动记录
     * @return 影响行数
     */
    int update(ExerciseRecord record);
    
    /**
     * 删除运动记录
     * @param exerciseId 运动记录ID
     * @return 影响行数
     */
    int deleteById(@Param("exerciseId") Integer exerciseId);
    
    /**
     * 查询用户指定日期范围内的运动记录
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 运动记录列表
     */
    List<ExerciseRecord> findByUserIdAndDateRange(@Param("userId") Integer userId, 
                                                 @Param("startDate") LocalDate startDate, 
                                                 @Param("endDate") LocalDate endDate);
    
    /**
     * 查询用户最近的运动记录
     * @param userId 用户ID
     * @param limit 限制条数
     * @return 运动记录列表
     */
    List<ExerciseRecord> findRecentByUserId(@Param("userId") Integer userId, @Param("limit") Integer limit);
    
    /**
     * 根据ID查询运动记录
     * @param exerciseId 运动记录ID
     * @return 运动记录
     */
    ExerciseRecord findById(@Param("exerciseId") Integer exerciseId);
}